Integrantes

Apellido, Nombre Código Correo Electronico
Alvarado Vargas, Fabian 201910354
Murga Díaz, Nathalie 202110238
Flores Soto, Ronaldo Dylan 202110122
Vilcarromero Moscoso, Rodo Arturo 202010431
Hilario Quintana, Jeffry 202020082

Introducción

La moda es una industria global en constante evolución y uno de los mayores impulsores del comercio internacional. Los consumidores buscan constantemente nuevas tendencias y estilos únicos, lo que hace que la industria de la moda sea altamente competitiva. Para ayudar a los minoristas a mantenerse al día con las últimas tendencias y preferencias de los consumidores, se están desarrollando nuevas herramientas de análisis de datos y motores de búsqueda para la moda.

Relevancia y Justificación:

En este contexto, el desarrollo de un gestor de motor de búsqueda para la elaboración de recomendaciones sobre las preferencias de la ropa de moda en la India se vuelve crucial para mejorar la capacidad de las empresas de este sector para ofrecer productos más acordes a las necesidades y gustos de los consumidores. Además, este tipo de herramientas tecnológicas permiten recopilar grandes cantidades de datos sobre las preferencias de los consumidores de manera eficiente, lo que es vital para mejorar la eficacia y eficiencia de la toma de decisiones empresariales.

Objetivos:

Objetivo Principal:

Nuestro objetivo de este trabajo es presentar un gestor de motor de búsqueda para elaborar recomendaciones sobre las preferencias de la ropa de moda en la India. Para ello, se analizará una base de datos que incluye información sobre los gustos y preferencias de los consumidores en cuanto a diferentes tipos de prendas y estilos de moda.

Objetivos Secundarios

A partir de esta información, se desarrollará un modelo de recomendación que permita a las empresas del sector ofrecer productos más acordes a las necesidades y gustos de los consumidores, contribuyendo así a mejorar su competitividad y su capacidad de satisfacer las demandas del mercado.

  • Identificar los productos más caros
  • Identificar los colores más repetidos que llevan el aumento de precio
  • Analizar qué productos en el mercado de la India son más caros y para qué género
  • Identificar los colores preferidos de la población con relación a su género

Datos

Recolección de datos

Se ha seleccionado la data de una base de datos de Kaggle con el nombre “Fashion Clothing Products Dataset” el cual presenta una población de 10000 valores. La base de datos se origina en Myntra.com, Myntra es una importante empresa india de comercio electrónico de moda con sede en Bengaluru, Karnataka, India. La empresa se fundó en 2007 para vender artículos de regalo personalizados. En mayo de 2014 , FlipKart adquirió Myntra.com.

Empezaremos cargando nuestra base de datos

library(readr)
## Warning: package 'readr' was built under R version 4.2.3
library(dplyr)
library(modeest)
## Warning: package 'modeest' was built under R version 4.2.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
dataframe<-read_csv("myntra_products_catalog.csv")
dataframe

Población Objetivo

Seleccionaremos una muestra de 1000 variables para poder cumplir nuestros objetivos y poder responder de manera adecuada cada pregunta usando los análisis y limpieza de los datos que hemos aprendido a lo largo de este curso.

A continuación seleccionaremos nuestra muestra

dataMuestra<-dataframe[1:1000,]
dataMuestra

y continuaremos con nuestro estudio en base a esta

Variables de estudio iniciales

Para la base de datos presentamos las siguientes variables:

Nombre de variable Tipo de variable Descripción
ProductoId cualitativa Es nuestra llave primaria para cada producto, única en toda la base de datos
NombreProducto cualitativa El nombre del producto
MarcaProducto cualitativa La marca que fabrica el producto
Género cualitativa El género el cual esta destinado para el producto
PrecioUSD cuantitativa El precio en Rupias(INR) convertido a dolares estadounidenses(USD)
NumImagenes cuantitativa Cantidad de imágenes que hay para el producto
Descripción cualitativa Una pequeña descripción sobre el producto
ColorPrimario cualitativa Color del producto

Actualizamos el nombre de nuestras columnas para una mejor visualización de nuestro estudio

colnames(dataMuestra)
## [1] "ProductID"    "ProductName"  "ProductBrand" "Gender"       "Price (INR)" 
## [6] "NumImages"    "Description"  "PrimaryColor"
colnames(dataMuestra)<-c("ProductoId","NombreProducto","MarcaProducto","Genero","PrecioUSD","NumImagenes","Descripción","ColorPrimario")

Ahora nuestras columnas se llamaran

colnames(dataMuestra)
## [1] "ProductoId"     "NombreProducto" "MarcaProducto"  "Genero"        
## [5] "PrecioUSD"      "NumImagenes"    "Descripción"    "ColorPrimario"

Control de los Na en las variables

any(is.na(dataMuestra$ProductoId))
## [1] FALSE
any(is.na(dataMuestra$NombreProducto))
## [1] FALSE
any(is.na(dataMuestra$MarcaProducto))
## [1] FALSE
any(is.na(dataMuestra$Genero))
## [1] FALSE
any(is.na(dataMuestra$PrecioUSD))
## [1] FALSE
any(is.na(dataMuestra$NumImagenes))
## [1] FALSE
any(is.na(dataMuestra$Descripción))
## [1] FALSE
any(is.na(dataMuestra$ColorPrimario))
## [1] TRUE

Detectamos que color primario cuenta con valores Na entonces procedemos a corregirlo

dataMuestra$ColorPrimario[is.na(dataMuestra$ColorPrimario)]<-"No color"
any(is.na(dataMuestra$ColorPrimario))
## [1] FALSE

Convertimos la rupia del Precio del producto a dolares estadounidenses

dataMuestra$PrecioUSD<-dataMuestra$PrecioUSD*0.012
dataMuestra$PrecioUSD[1:10]
##  [1] 140.940  69.720  10.788  67.188   9.108   9.492   8.628  10.788   7.968
## [10] 208.320

La moda de los productos.

getmode <- function(mod) {
   uniqv <- unique(mod)
   uniqv[which.max(tabulate(match(mod, uniqv)))]
}

mod <- dataMuestra$NombreProducto

result <- getmode(mod)
print(result)
## [1] "Parx Men Blue Slim Fit Checked Casual Shirt"

La moda de la marca del producto

getmode <- function(mod) {
   uniqv <- unique(mod)
   uniqv[which.max(tabulate(match(mod, uniqv)))]
}

mod <- dataMuestra$MarcaProducto

result <- getmode(mod)
print(result)
## [1] "Parx"

La moda del género

getmode <- function(mod) {
   uniqv <- unique(mod)
   uniqv[which.max(tabulate(match(mod, uniqv)))]
}

mod <- dataMuestra$Genero

result <- getmode(mod)
print(result)
## [1] "Women"

La media de precios de la empresa en USD

mean(dataMuestra$PrecioUSD)
## [1] 20.80039

La mediana de precios de la empresa en USD

MedianaPrecio<-median(dataMuestra$PrecioUSD)
MedianaPrecio
## [1] 10.788

La moda de precios de la empresa en USD

getmode <- function(mod) {
   uniqv <- unique(mod)
   uniqv[which.max(tabulate(match(mod, uniqv)))]
}
mod <- dataMuestra$PrecioUSD
result <- getmode(mod)
print(result)
## [1] 8.388
cantResult=max(table(mod))
barplot(table(mod),col=ifelse(table(mod)==cantResult,"red","yellow"))

El rango de los precios

range(dataMuestra$PrecioUSD)
## [1]   3.108 373.200
plot(dataMuestra$PrecioUSD,main="Rango de los precios",xlab="cantPrecios",ylab="Precios",col="red")

El rango intercuartil de precios

Q1=quantile(dataMuestra$PrecioUSD,0.25)#Q1
Q3=quantile(dataMuestra$PrecioUSD,0.75)#Q1
Q3-Q1
##   75% 
## 11.76
#segunda forma
IQR(dataMuestra$PrecioUSD)
## [1] 11.76
boxplot(dataMuestra$PrecioUSD,col=c('yellow'),horizontal = T,main="Rango de precios USD")

La desviacion estandar

sd(dataMuestra$PrecioUSD)#cuanto se dispersa el precio con respecto al promedio
## [1] 34.85258

La varianza del precio

var(dataMuestra$PrecioUSD)
## [1] 1214.702

El coeficiente de variación del precio

coef_var <- function(cv, na.rm = TRUE) {
  sd(cv, na.rm=na.rm) / mean(cv, na.rm=na.rm)
}
cv <- dataMuestra$PrecioUSD
print(coef_var(cv))
## [1] 1.675573

La moda de las imagenes

getmode <- function(mod) {
   uniqv <- unique(mod)
   uniqv[which.max(tabulate(match(mod, uniqv)))]
}

mod <- dataMuestra$NumImagenes

result <- getmode(mod)
print(result)
## [1] 5
boxplot(dataMuestra$NumImagenes,horizontal = T,col="skyblue",main="Numero de Img")

Identificar el producto más caro

max(dataMuestra$PrecioUSD)
## [1] 373.2
productoCaro<-dataMuestra%>%
  filter(dataMuestra$PrecioUSD==max(dataMuestra$PrecioUSD))
productoCaro

Identificar los colores más repetidos que llevan el aumento de precio

Modcolor<-getmode(dataMuestra$ColorPrimario)
preguntaColor<-dataMuestra %>%
  filter(dataMuestra$ColorPrimario==Modcolor)
ModPrecioColor<-getmode(preguntaColor$PrecioUSD)
ModPrecioColor
## [1] 8.388
cantResultColor<-max(table(preguntaColor$PrecioUSD))
x <- c(1, 5, 1, 6, 2, 1, 6, 7, 1,8,9,10,11,12,13)
barplot(table(preguntaColor$PrecioUSD), col= ifelse(table(preguntaColor$PrecioUSD)==cantResultColor,"red","green"))

Cuales son los precios más caros para los Varones

table(dataMuestra$Genero) 
## 
##   Boys  Girls    Men Unisex  Women 
##     63     43    373    148    373
preguntaBoys<- dataMuestra %>%
  filter(dataMuestra$Genero=='Boys')

MaxBoys=max(preguntaBoys$PrecioUSD)
print('Precio maximo para Boys:')
## [1] "Precio maximo para Boys:"
print(MaxBoys)
## [1] 20.388
preguntaMen<- dataMuestra %>%
  filter(dataMuestra$Genero=='Men')
MaxMens=max(preguntaMen$PrecioUSD)
print('Precio maximo para Men:')
## [1] "Precio maximo para Men:"
print(MaxMens)
## [1] 79.788
TotalVarones=MaxBoys+MaxMens
print('Precio total:')
## [1] "Precio total:"
print(TotalVarones)
## [1] 100.176

Cuales son los precios más caros para las Damas

table(dataMuestra$Genero) 
## 
##   Boys  Girls    Men Unisex  Women 
##     63     43    373    148    373
preguntaGirls<- dataMuestra %>%
  filter(dataMuestra$Genero=='Girls')
MaxGirls=max(preguntaGirls$PrecioUSD)
print('Precio maximo para Girls:')
## [1] "Precio maximo para Girls:"
print(MaxGirls)
## [1] 45.6
preguntaWomen<- dataMuestra %>%
  filter(dataMuestra$Genero=='Women')
MaxWomen=max(preguntaWomen$PrecioUSD)
print('Precio maximo para Women: ')
## [1] "Precio maximo para Women: "
print(MaxWomen)
## [1] 133.644
TotalDamas=MaxGirls+MaxWomen
print('Precio total: ')
## [1] "Precio total: "
print(TotalDamas)
## [1] 179.244
if (TotalDamas>TotalVarones){
  print("Las Damas tienen precio más caro con una diferencia de ")
  print(TotalDamas-TotalVarones)
}else{
  print("Los Varones tienen precio más caro con una diferencia de ")
  print(TotalVarones-TotalDamas)
}
## [1] "Las Damas tienen precio más caro con una diferencia de "
## [1] 79.068